/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package API_Db;

/**
 *
 * @author Damador
 */
import java.sql.Statement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;


/**
 * Classe de connexion a la base de donnees (singleton)
 * @author Pierre
 */
public class ConnexionDB {

    private static Connection connect;
    private static ConnexionDB connexionDb;

    /**
     * Constructeur privé
     */
    private ConnexionDB() throws Exception {
        try {
            Class.forName(Constantes.DRIVER_BDD);
            connect = DriverManager.getConnection(Constantes.URL_BDD, Constantes.LOGIN_BDD, Constantes.MDP_BDD);
        } catch (Exception ex) {
            throw new Exception("Echec connexion a la base de donnees <br />" + ex.getMessage());
        }
    }
    
    
    public int Deconnection() throws Exception {
        if(connect != null)
        {
            connect.close();
            return 1;
        }else
        {
            return -3;
        }
    }

    /**
     * Méthode qui va nous retourner notre instance et la créer si elle n'existe pas
     * @return
     */
    public static ConnexionDB getConnexion() throws Exception {
        if (connexionDb == null) {
            connexionDb = new ConnexionDB();
        }
        return connexionDb;
    }
    
    /**
     * Methode permettant d'executer une requete de type "SELECT"
     */
    public ResultSet executerRequeteQuery(String req) {
        try {
            Statement stmt = connect.createStatement();
            return stmt.executeQuery(req);
        } catch (Exception Ex) {
            Ex.printStackTrace();
            return null;
        }
    }

    /**
     * Methode permettant d'executer une requete de type "INSERT, UPDATE, DELETE"
     */
    public int executerRequeteUpdate(String req) throws Exception {
        try {
            Statement stmt = connect.createStatement();
            return stmt.executeUpdate(req);
        } catch (Exception ex) {
            throw ex;
        }
    }
}
